print("{:+}".format(520))  # +520
print("{:-}".format(-250))  # -250
print("{:+} {:-}".format(520, -250))  # +520 -250

# 设置千分位的分隔符
print("{:,}".format(1234))  # 1,234
print("{:_}".format(1234))  # 1_234
print("{:,}".format(123))  # 123
print("{:,}".format(1234456))  # 1,234,456

# 精度
# 对于[type]设置为 f 或者 F 的浮点数来说，是限定小数点 ！！！！后！！！！ 显示多少个位数
print("{:.2f}".format(3.1415))  # 3.14

# 对于[type]设置为 g 或者 G 的浮点数来说，是限定小数点 ！！！！前后！！！！ 一共显示多少个位数
print("{:.2g}".format(3.1415))  # 3.1

# 对于非数字类型来说，限定的是！！！！最大字段！！！！的大小
print("{:.6}".format("I love FishC"))  # I love

# 对于整数类型来说，则！！！！不允许！！！！使用 [.precision] 选项
# print("{:.2}".format(520))  # 报错！因为精度选项不允许用在整数上

# b :将参数以 二进制 的形式输出
print("{:b}".format(80))  # 1010000

print("{:#b}".format(80))  # 0b1010000 表示这是一个二进制数

# c :将参数以 Unicode字符 的形式输出
print("{:c}".format(80))  # P

# d :将参数以 十进制 的形式输出
print("{:d}".format(80))  # 80

# o :将参数以 八进制 的形式输出
print("{:o}".format(80))  # 120
print("{:#o}".format(80))  # 0o120 0o开头的，表示这是一个八进制数

# x :将参数以 16进制 的形式输出
print("{:x}".format(80))  # 50
print("{:#x}".format(80))  # 0x50 表示这是一个16进制数

# X :将参数以 16进制 的形式输出
print("{:X}".format(80))  # 50

# n :跟 d 类似，不同之处在于它会使用当前语言环境设置的分隔符插入到恰当的位置

# None :跟 d 一样

# e ：将参数以科学计数法的形式输出（以字母 e 来表示指数，默认精度为6）
print("{:e}".format(3.14))  # 3.140000e+00

# E ：将参数以科学计数法的形式输出（以字母 E 来表示指数，默认精度为6）
print("{:E}".format(3.14))  # 3.140000e+00

# f ：将参数以定点表示法的形式输出（不是数用 nan 表示，无穷用 inf 表示，默认精度为6）
print("{:f}".format(3.14))  # 3.1400

# F ：将参数以定点表示法的形式输出（不是数用 nan 表示，无穷用 inf 表示，默认精度为6）
print("{:F}".format(3.14))  # 3.1400

# g ：通用格式，小数以 f 形式输出，大数以 e 的形式输出
# G ：通用格式，小数以 f 形式输出，大数以 e 的形式输出
print("{:g}".format(1234567))  # 1.23457e+06
print("{:g}".format(1234.567))  # 1234.57

# n ：跟 g 类似，不同之处在于它会使用当前语言环境设置的分隔符插入到适当位置
print("{:n}".format(12345678910))  # 12345678910

# %：以百分比的形式输出（将数字乘以100并显示为定点表示法（f）的形式，后面带一个百分号）
print("{:%}".format(123))  # 12300.000000%
print("{:%}".format(10))  # 1000.000000%
print("{:%}".format(0.5))  # 50.000000%
print("{:%}".format(0.98))  # 98.000000%
print("{:.2%}".format(0.98))  # 98.00%

# 通过关键字参数来设置保留的精度
print("{:.{precision}%}".format(3.1415, precision=2))  # 314.15%
print("{:.{precision}f}".format(3.1415, precision=2))  # 3.14
print("{:{fill}{align}{width}.{precision}{type}}".format(3.1415, fill='+', align='^', width=10, precision=3, type='g'))  # +++3.14+++

# f 字符串,就是语法糖，就是另一种形式的 format
year = 2010
r = F"鱼C工作室成立于 {year} 年"
print(r)  # 鱼C工作室成立于 20010 年

r = f"1 + 2 = {1 + 2}，2的平方是{2 * 2}，2的立方是{2 * 2 * 2}"
print(r)  # 1 + 2 = 3，2的平方是4，2的立方是8

print("{:010}".format(-520))  # -000000520
r = f"{-520:010}"
print(r)  # -000000520

print("{:,}".format(1234456))  # 1,234,456
r = F"{1234456:,}"
print(r)  # 1,234,456

print("{:.2f}".format(3.1415))  # 3.14
r = F"{3.14:.2f}"
print(r)  # 3.14

print("{:{fill}{align}{width}.{precision}{type}}".format(3.1415, fill='+', align='^', width=10, precision=3, type='g'))  # +++3.14+++
fill = '+'
align = '^'
width = 10
precision = 3
ty = 'g'
r = F"{3.14:{fill}{align}{width}.{precision}{ty}}"
print(r)  # +++3.14+++
